package com.dragon.modules.yuegou.model.wallet;

import com.dragon.modules.yuegou.entity.wallet.MerchantWithdrawEntity;
import com.dragon.modules.yuegou.enums.wallet.MerchantWithdrawCheckStatus;
import com.dragon.modules.yuegou.enums.wallet.MerchantWithdrawWithdrawableType;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商户提现模型类
 * 
 * @author pbuilder generated
 * @date 2019-06-03 15:20:36
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class MerchantWithdraw extends MerchantWithdrawEntity {

	@ApiModelProperty("提现前金额")
	private BigDecimal amountBefore;

	@ApiModelProperty("提现后金额")
	private BigDecimal amountAfter;

	@ApiModelProperty("平台服务费")
	private BigDecimal serviceFee;

	@ApiModelProperty("商户名称")
	private String merchantName;

	public BigDecimal getAmountBefore() {
		return amountBefore;
	}

	public void setAmountBefore(BigDecimal amountBefore) {
		this.amountBefore = amountBefore;
	}

	public BigDecimal getAmountAfter() {
		return amountAfter;
	}

	public void setAmountAfter(BigDecimal amountAfter) {
		this.amountAfter = amountAfter;
	}

	public BigDecimal getServiceFee() {
		return serviceFee;
	}

	public void setServiceFee(BigDecimal serviceFee) {
		this.serviceFee = serviceFee;
	}

	public String getMerchantName() {
		return merchantName;
	}

	public void setMerchantName(String merchantName) {
		this.merchantName = merchantName;
	}

	/**
	 * 构造一个空商户提现模型对象
	 */
	public MerchantWithdraw() {
		super();
	}

	/**
	 * 依据实体对象的信息构造一个商户提现模型对象
	 * 
	 * @param entity 实体对象
	 */
	public MerchantWithdraw(MerchantWithdrawEntity entity) {
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个商户提现模型对象
	 * 
	 * @param other 其它对象
	 */
	public MerchantWithdraw(MerchantWithdraw other) {
		super(other);
	}

	@Override
	public String getId() {
		return id;
	}

	/**
	 * 设置提现记录ID
	 * 
	 * @param id 提现记录ID
	 * @return 当前对象
	 */
	public MerchantWithdraw id(String id) {
		this.id = id;
		return this;
	}

	@Override
	public String getMerchantId() {
		return merchantId;
	}

	/**
	 * 设置商户ID（冗余）
	 * 
	 * @param merchantId 商户ID（冗余）
	 * @return 当前对象
	 */
	public MerchantWithdraw merchantId(String merchantId) {
		this.merchantId = merchantId;
		return this;
	}

	@Override
	public String getMerchantWalletId() {
		return merchantWalletId;
	}

	/**
	 * 设置商户钱包ID
	 * 
	 * @param merchantWalletId 商户钱包ID
	 * @return 当前对象
	 */
	public MerchantWithdraw merchantWalletId(String merchantWalletId) {
		this.merchantWalletId = merchantWalletId;
		return this;
	}

	@Override
	public String getMerchantUserId() {
		return merchantUserId;
	}

	/**
	 * 设置商户用户ID
	 * 
	 * @param merchantUserId 商户用户ID
	 * @return 当前对象
	 */
	public MerchantWithdraw merchantUserId(String merchantUserId) {
		this.merchantUserId = merchantUserId;
		return this;
	}

	@Override
	public BigDecimal getAmount() {
		return amount;
	}

	/**
	 * 设置提现总额
	 * 
	 * @param amount 提现总额
	 * @return 当前对象
	 */
	public MerchantWithdraw amount(BigDecimal amount) {
		this.amount = amount;
		return this;
	}

	@Override
	public BigDecimal getYueCoin() {
		return yueCoin;
	}

	/**
	 * 设置提现的悦币额度
	 * 
	 * @param yueCoin 提现的悦币额度
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCoin(BigDecimal yueCoin) {
		this.yueCoin = yueCoin;
		return this;
	}

	@Override
	public BigDecimal getYueCoinBefore() {
		return yueCoinBefore;
	}

	/**
	 * 设置提现前的悦币余额
	 * 
	 * @param yueCoinBefore 提现前的悦币余额
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCoinBefore(BigDecimal yueCoinBefore) {
		this.yueCoinBefore = yueCoinBefore;
		return this;
	}

	@Override
	public BigDecimal getYueCoinAfter() {
		return yueCoinAfter;
	}

	/**
	 * 设置提现后的悦币余额
	 * 
	 * @param yueCoinAfter 提现后的悦币余额
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCoinAfter(BigDecimal yueCoinAfter) {
		this.yueCoinAfter = yueCoinAfter;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableYueCoinBefore() {
		return withdrawableYueCoinBefore;
	}

	/**
	 * 设置提现前的可提现悦币余额
	 * 
	 * @param withdrawableYueCoinBefore 提现前的可提现悦币余额
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableYueCoinBefore(BigDecimal withdrawableYueCoinBefore) {
		this.withdrawableYueCoinBefore = withdrawableYueCoinBefore;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableYueCoinAfter() {
		return withdrawableYueCoinAfter;
	}

	/**
	 * 设置提现后的可提现悦币余额
	 * 
	 * @param withdrawableYueCoinAfter 提现后的可提现悦币余额
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableYueCoinAfter(BigDecimal withdrawableYueCoinAfter) {
		this.withdrawableYueCoinAfter = withdrawableYueCoinAfter;
		return this;
	}

	@Override
	public BigDecimal getYueCardBought() {
		return yueCardBought;
	}

	/**
	 * 设置提现的悦卡额度（会员购买）
	 * 
	 * @param yueCardBought 提现的悦卡额度（会员购买）
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCardBought(BigDecimal yueCardBought) {
		this.yueCardBought = yueCardBought;
		return this;
	}

	@Override
	public BigDecimal getYueCardBoughtBefore() {
		return yueCardBoughtBefore;
	}

	/**
	 * 设置提现前的可提现悦卡余额（会员购买）
	 * 
	 * @param yueCardBoughtBefore 提现前的可提现悦卡余额（会员购买）
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCardBoughtBefore(BigDecimal yueCardBoughtBefore) {
		this.yueCardBoughtBefore = yueCardBoughtBefore;
		return this;
	}

	@Override
	public BigDecimal getYueCardBoughtAfter() {
		return yueCardBoughtAfter;
	}

	/**
	 * 设置提现后的悦卡余额（会员购买）
	 * 
	 * @param yueCardBoughtAfter 提现后的悦卡余额（会员购买）
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCardBoughtAfter(BigDecimal yueCardBoughtAfter) {
		this.yueCardBoughtAfter = yueCardBoughtAfter;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableYueCardBoughtBefore() {
		return withdrawableYueCardBoughtBefore;
	}

	/**
	 * 设置提现前的可提现悦卡余额（会员购买）
	 * 
	 * @param withdrawableYueCardBoughtBefore 提现前的可提现悦卡余额（会员购买）
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableYueCardBoughtBefore(BigDecimal withdrawableYueCardBoughtBefore) {
		this.withdrawableYueCardBoughtBefore = withdrawableYueCardBoughtBefore;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableYueCardBoughtAfter() {
		return withdrawableYueCardBoughtAfter;
	}

	/**
	 * 设置提现后的可提现悦卡余额（会员购买）
	 * 
	 * @param withdrawableYueCardBoughtAfter 提现后的可提现悦卡余额（会员购买）
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableYueCardBoughtAfter(BigDecimal withdrawableYueCardBoughtAfter) {
		this.withdrawableYueCardBoughtAfter = withdrawableYueCardBoughtAfter;
		return this;
	}

	@Override
	public BigDecimal getYueCardGranted() {
		return yueCardGranted;
	}

	/**
	 * 设置提现的悦卡额度（企业发放）
	 * 
	 * @param yueCardGranted 提现的悦卡额度（企业发放）
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCardGranted(BigDecimal yueCardGranted) {
		this.yueCardGranted = yueCardGranted;
		return this;
	}

	@Override
	public BigDecimal getYueCardGrantedBefore() {
		return yueCardGrantedBefore;
	}

	/**
	 * 设置提现前的悦卡余额（企业发放）
	 * 
	 * @param yueCardGrantedBefore 提现前的悦卡余额（企业发放）
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCardGrantedBefore(BigDecimal yueCardGrantedBefore) {
		this.yueCardGrantedBefore = yueCardGrantedBefore;
		return this;
	}

	@Override
	public BigDecimal getYueCardGrantedAfter() {
		return yueCardGrantedAfter;
	}

	/**
	 * 设置提现后的悦卡余额（企业发放）
	 * 
	 * @param yueCardGrantedAfter 提现后的悦卡余额（企业发放）
	 * @return 当前对象
	 */
	public MerchantWithdraw yueCardGrantedAfter(BigDecimal yueCardGrantedAfter) {
		this.yueCardGrantedAfter = yueCardGrantedAfter;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableYueCardGrantedBefore() {
		return withdrawableYueCardGrantedBefore;
	}

	/**
	 * 设置提现前的可提现悦卡余额（企业发放）
	 * 
	 * @param withdrawableYueCardGrantedBefore 提现前的可提现悦卡余额（企业发放）
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableYueCardGrantedBefore(BigDecimal withdrawableYueCardGrantedBefore) {
		this.withdrawableYueCardGrantedBefore = withdrawableYueCardGrantedBefore;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableYueCardGrantedAfter() {
		return withdrawableYueCardGrantedAfter;
	}

	/**
	 * 设置提现后的可提现悦卡余额（企业发放）
	 * 
	 * @param withdrawableYueCardGrantedAfter 提现后的可提现悦卡余额（企业发放）
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableYueCardGrantedAfter(BigDecimal withdrawableYueCardGrantedAfter) {
		this.withdrawableYueCardGrantedAfter = withdrawableYueCardGrantedAfter;
		return this;
	}

	@Override
	public BigDecimal getWechatAmount() {
		return wechatAmount;
	}

	/**
	 * 设置提现的微信余额
	 * 
	 * @param wechatAmount 提现的微信余额
	 * @return 当前对象
	 */
	public MerchantWithdraw wechatAmount(BigDecimal wechatAmount) {
		this.wechatAmount = wechatAmount;
		return this;
	}

	@Override
	public BigDecimal getWechatAmountBefore() {
		return wechatAmountBefore;
	}

	/**
	 * 设置提现前的微信余额
	 * 
	 * @param wechatAmountBefore 提现前的微信余额
	 * @return 当前对象
	 */
	public MerchantWithdraw wechatAmountBefore(BigDecimal wechatAmountBefore) {
		this.wechatAmountBefore = wechatAmountBefore;
		return this;
	}

	@Override
	public BigDecimal getWechatAmountAfter() {
		return wechatAmountAfter;
	}

	/**
	 * 设置提现后的微信余额
	 * 
	 * @param wechatAmountAfter 提现后的微信余额
	 * @return 当前对象
	 */
	public MerchantWithdraw wechatAmountAfter(BigDecimal wechatAmountAfter) {
		this.wechatAmountAfter = wechatAmountAfter;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableWechatAmountBefore() {
		return withdrawableWechatAmountBefore;
	}

	/**
	 * 设置提现前的可提现微信余额
	 * 
	 * @param withdrawableWechatAmountBefore 提现前的可提现微信余额
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableWechatAmountBefore(BigDecimal withdrawableWechatAmountBefore) {
		this.withdrawableWechatAmountBefore = withdrawableWechatAmountBefore;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableWechatAmountAfter() {
		return withdrawableWechatAmountAfter;
	}

	/**
	 * 设置提现后的可提现微信余额
	 * 
	 * @param withdrawableWechatAmountAfter 提现后的可提现微信余额
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableWechatAmountAfter(BigDecimal withdrawableWechatAmountAfter) {
		this.withdrawableWechatAmountAfter = withdrawableWechatAmountAfter;
		return this;
	}

	@Override
	public BigDecimal getAlipayAmount() {
		return alipayAmount;
	}

	/**
	 * 设置提现的支付宝余额
	 * 
	 * @param alipayAmount 提现的支付宝余额
	 * @return 当前对象
	 */
	public MerchantWithdraw alipayAmount(BigDecimal alipayAmount) {
		this.alipayAmount = alipayAmount;
		return this;
	}

	@Override
	public BigDecimal getAlipayAmountBefore() {
		return alipayAmountBefore;
	}

	/**
	 * 设置提现前的支付宝余额
	 * 
	 * @param alipayAmountBefore 提现前的支付宝余额
	 * @return 当前对象
	 */
	public MerchantWithdraw alipayAmountBefore(BigDecimal alipayAmountBefore) {
		this.alipayAmountBefore = alipayAmountBefore;
		return this;
	}

	@Override
	public BigDecimal getAlipayAmountAfter() {
		return alipayAmountAfter;
	}

	/**
	 * 设置提现后的支付宝余额
	 * 
	 * @param alipayAmountAfter 提现后的支付宝余额
	 * @return 当前对象
	 */
	public MerchantWithdraw alipayAmountAfter(BigDecimal alipayAmountAfter) {
		this.alipayAmountAfter = alipayAmountAfter;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableAlipayAmountBefore() {
		return withdrawableAlipayAmountBefore;
	}

	/**
	 * 设置提现前的可提现支付宝余额
	 * 
	 * @param withdrawableAlipayAmountBefore 提现前的可提现支付宝余额
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableAlipayAmountBefore(BigDecimal withdrawableAlipayAmountBefore) {
		this.withdrawableAlipayAmountBefore = withdrawableAlipayAmountBefore;
		return this;
	}

	@Override
	public BigDecimal getWithdrawableAlipayAmountAfter() {
		return withdrawableAlipayAmountAfter;
	}

	/**
	 * 设置提现后的可提现支付宝余额
	 * 
	 * @param withdrawableAlipayAmountAfter 提现后的可提现支付宝余额
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableAlipayAmountAfter(BigDecimal withdrawableAlipayAmountAfter) {
		this.withdrawableAlipayAmountAfter = withdrawableAlipayAmountAfter;
		return this;
	}

	@Override
	public MerchantWithdrawWithdrawableType getWithdrawableType() {
		return withdrawableType;
	}

	/**
	 * 设置[枚举]返现方式：0-提现-CASH、1-聚合支付返现-CASHBACK
	 * 
	 * @param withdrawableType [枚举]返现方式：0-提现-CASH、1-聚合支付返现-CASHBACK
	 * @return 当前对象
	 */
	public MerchantWithdraw withdrawableType(MerchantWithdrawWithdrawableType withdrawableType) {
		this.withdrawableType = withdrawableType;
		return this;
	}

	@Override
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}

	/**
	 * 设置提现时间
	 * 
	 * @param createdTime 提现时间
	 * @return 当前对象
	 */
	public MerchantWithdraw createdTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
		return this;
	}

	@Override
	public String getEncBankNo() {
		return encBankNo;
	}

	/**
	 * 设置收款方银行卡号
	 * 
	 * @param encBankNo 收款方银行卡号
	 * @return 当前对象
	 */
	public MerchantWithdraw encBankNo(String encBankNo) {
		this.encBankNo = encBankNo;
		return this;
	}

	@Override
	public String getEncTrueName() {
		return encTrueName;
	}

	/**
	 * 设置收款方用户名
	 * 
	 * @param encTrueName 收款方用户名
	 * @return 当前对象
	 */
	public MerchantWithdraw encTrueName(String encTrueName) {
		this.encTrueName = encTrueName;
		return this;
	}

	@Override
	public String getBankCode() {
		return bankCode;
	}

	/**
	 * 设置收款方开户行
	 * 
	 * @param bankCode 收款方开户行
	 * @return 当前对象
	 */
	public MerchantWithdraw bankCode(String bankCode) {
		this.bankCode = bankCode;
		return this;
	}

	@Override
	public BigDecimal getPayAmount() {
		return payAmount;
	}

	/**
	 * 设置实际付款金额
	 * 
	 * @param payAmount 实际付款金额
	 * @return 当前对象
	 */
	public MerchantWithdraw payAmount(BigDecimal payAmount) {
		this.payAmount = payAmount;
		return this;
	}

	@Override
	public String getRemarks() {
		return remarks;
	}

	/**
	 * 设置付款说明
	 * 
	 * @param remarks 付款说明
	 * @return 当前对象
	 */
	public MerchantWithdraw remarks(String remarks) {
		this.remarks = remarks;
		return this;
	}

	@Override
	public MerchantWithdrawCheckStatus getCheckStatus() {
		return checkStatus;
	}

	/**
	 * 设置[枚举]提现状态：0-待审核-CHECKING、1-已通过-PASSED、2-未通过-UNPASS
	 * 
	 * @param checkStatus [枚举]提现状态：0-待审核-CHECKING、1-已通过-PASSED、2-未通过-UNPASS
	 * @return 当前对象
	 */
	public MerchantWithdraw checkStatus(MerchantWithdrawCheckStatus checkStatus) {
		this.checkStatus = checkStatus;
		return this;
	}

	@Override
	public String getCheckedBy() {
		return checkedBy;
	}

	/**
	 * 设置审核人
	 * 
	 * @param checkedBy 审核人
	 * @return 当前对象
	 */
	public MerchantWithdraw checkedBy(String checkedBy) {
		this.checkedBy = checkedBy;
		return this;
	}

	@Override
	public LocalDateTime getCheckedTime() {
		return checkedTime;
	}

	/**
	 * 设置审核时间
	 * 
	 * @param checkedTime 审核时间
	 * @return 当前对象
	 */
	public MerchantWithdraw checkedTime(LocalDateTime checkedTime) {
		this.checkedTime = checkedTime;
		return this;
	}
}
